﻿using System;

namespace Rosetta
{
    public interface IAccepts : IAddIn
    {
        #region Properties

        /// <summary>
        /// Returns all distinct types this AddIn can use.
        /// </summary>
        [NotNull]
        Type[] ArgumentTypes { get; }

        #endregion

        #region Methods

        [NotNull]
        IMethodEntry[] GetMethodsByArgumentType([NotNull] Type argumentType);

        [NotNull]
        IMethodEntry[] GetMethodsByArgumentTypes([NotNull] Type[] argumentTypes);

        #endregion
    }
}